package com.zy.yygh.oss.service.impl;

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.zy.yygh.oss.service.FileService;
import com.zy.yygh.oss.utils.ConstantOssPropertiesUtils;
import org.joda.time.DateTime;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.io.InputStream;
import java.util.UUID;

@Service
public class FileServiceImpl implements FileService {

//文件上传到阿里云oss
    @Override
    public String upload(MultipartFile file) {

        try {
            // Endpoint以杭州为例，其它Region请按实际情况填写。
            String endpoint = ConstantOssPropertiesUtils.ENDPOINT;
            String accessKeyId = ConstantOssPropertiesUtils.ACCESS_KEY_ID;
            String accessKeySecret = ConstantOssPropertiesUtils.SECRET;
            String bucketName = ConstantOssPropertiesUtils.BUCKET;
            //c创建OssClient实例
            OSS ossClient =new OSSClientBuilder().build(endpoint,accessKeyId,accessKeySecret);
            //上传文件流
            InputStream inputStream= file.getInputStream();
            //获取文件路径
            String fileName=file.getOriginalFilename();

            //生成随机唯一值，使用uuid，添加到文件名称里面
            String uuid= UUID.randomUUID().toString().replaceAll("-","");
            fileName=uuid+fileName;

            //按照当前日期，创建文件夹，上传到创建文件夹里面
            String timeUrl = new DateTime().toString("yyyy/MM/dd");
            fileName=timeUrl+"/"+fileName;
            //调用方法实现上传
            ossClient.putObject(bucketName,fileName,inputStream);
            //关闭ossClient
            ossClient.shutdown();

            //上传文件路径
            String url = "https://"+bucketName+"."+endpoint+"/"+fileName;
            return url;
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }
}
